<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串对象</title>
</head>
<body>
    <script>
        // 1
        // 基本包装类型
        // var str = 'andy';
        // console.log(str.length);
        // 对象才有 属性和方法  复杂数据类型才有 属性和方法
        // 简单数据类型 为什么会有 length 属性呢
        // 基本包装类型 ： 就是把简单数据类型 包装成了 复杂数据类型
        // （1） 把简单数据类型 包装为复杂数据类型
        // var temp = new String('andy');
        // // (2)  把临时变量的值 给str
        // str = temp;
        // // (3)  销毁这个临时变量
        // temp = null;

    
        // 2
        // 因为字符串的不可变所以不要大量的拼接字符串  改变只是开辟了一个新空间  多了电脑会卡顿
        // var str1 = '';
        // for (var i = 1; i <= 1000000; i++){
        //     str1  += i;
        // }
        // console.log(str1);

        // 3
       
        // 字符串所有的方法 都不会修改字符串本身（字符串是不可变的） 操作完成会返回一个新的字符串

         // 根据字符返回位置   str.indexOf('查找的字符'，'[起始的位置]')  前面数组也一样
        //  var str = '改革春风吹满地,春';
        //  console.log(str.indexOf('春')); // 2
        //  console.log(str.indexOf('春',[3])); // 8 隔过第一个春
        //  console.log(str.lastIndexOf('春')); // 使用方法和上面一样

         // 4
         // 根据位置返回字符（重点）
        //  4.1 charAt(index)
        // var str = 'andy';
        // console.log(str.charAt(3));
        // // 遍历所有的字符
        // for(var i = 0;i < str.length; i++){
        //     console.log(str.charAt(i)); // 打印出来 a n d y
        // }

        // // 4.2 charCodeAt(index) 返回相应索引号的字符 ASCII 值， 目的 ： 判断用户按下了哪个键
        // console.log(str.charCodeAt(0)); // 对应的值是 97 有一个表 可以参考

        // // 4.3 str[index] h5新增的
        // console.log(str[0]);


        // 5
        // 字符串操作方法
        // concat('字符串1'，'字符串2'... )   链接字符串
         var str = 'andy';
         console.log(str.concat('rad'));

        //   substr(start,length)截取  start 开始位置（索引号） length 取的个数， 重点
        var t = '改革春风吹满地';
        console.log(t.substr(2,2));

        // 替换字符串 replace('被替换的字符'，'替换的字符')
        var a = 'andy';
        console.log(a.replace('a','b')); // 只会替换第一个字符
        //  有一个字符串 'abbbaccb' 要求把里面所有的 a 替换为 *
        var z = 'abbbaccb';
        while (z.indexOf('a') !== -1){
            z = z.replace('a','*');
        }
        console.log(z);

        // 字符转换为数组 split('分隔符')  前面学过的 join 把数组转换为字符串 刚好相反
        var d = 'red , pink, blue';
        console.log(d.split(','));
        var v = 'red&pink&blue';
        console.log(v.split('&'));

        // 转换大小写
        // toUpperCase() 转换大写
        var zz = 'zxcb';
        console.log(zz.toUpperCase());
        // toLowerCase() 转换小写
        var az = 'ASDF';
        console.log(az.toLowerCase());


    </script>
</body>
</html>